/**
 * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.jeeplus.modules.fee.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeeplus.common.utils.excel.annotation.ExcelField;
import com.jeeplus.core.persistence.DataEntity;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 应收发票Entity
 * @author weisong
 * @version 2017-09-19
 */
public class PayInvoice extends DataEntity<PayInvoice> {
	
	private static final long serialVersionUID = 1L;
	//发票状态
	public static final int updateStatus1 = 2;		//部分核销
	public static final int updateStatus2 = 3;		//全部核销
	public static final int updateStatus3 = 1;		//已确认
	private String invoiceNo;		// 开票单号
	private Date invoiceDate;		// 开票日期
	private Integer status;		// 状态
	private String invoiceObj;		// 结算方
	private Double vcaMoney;		// 核销金额
	private String entityNo;		// 实体票号
	private Double invoiceMoney;		// 开票金额
	private Integer invoiceType;		// 发票类型
	private String taxPayerNo;		// 纳税人识别号
	private String bankName;		// 开户行
	private String bankNo;		// 开户行账号
	private String tel;		// 电话
	private String bankAddress;		// 开户行地址
	private String feePayable;		// 应付结算单
	private String logistics;		// 物流组织
	
	public PayInvoice() {
		super();
	}

	public PayInvoice(String id){
		super(id);
	}

	@ExcelField(title="开票单号", align=2, sort=6)
	public String getInvoiceNo() {
		return invoiceNo;
	}

	public void setInvoiceNo(String invoiceNo) {
		this.invoiceNo = invoiceNo;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@NotNull(message="开票日期不能为空")
	@ExcelField(title="开票日期", align=2, sort=7)
	public Date getInvoiceDate() {
		return invoiceDate;
	}

	public void setInvoiceDate(Date invoiceDate) {
		this.invoiceDate = invoiceDate;
	}
	
	@NotNull(message="状态不能为空")
	@ExcelField(title="状态", dictType="pay_invoice_status", align=2, sort=8)
	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
	}
	
	@ExcelField(title="结算方", align=2, sort=9)
	public String getInvoiceObj() {
		return invoiceObj;
	}

	public void setInvoiceObj(String invoiceObj) {
		this.invoiceObj = invoiceObj;
	}
	
	@ExcelField(title="核销金额", align=2, sort=10)
	public Double getVcaMoney() {
		return vcaMoney;
	}

	public void setVcaMoney(Double vcaMoney) {
		this.vcaMoney = vcaMoney;
	}
	
	@ExcelField(title="实体票号", align=2, sort=11)
	public String getEntityNo() {
		return entityNo;
	}

	public void setEntityNo(String entityNo) {
		this.entityNo = entityNo;
	}
	
	@NotNull(message="开票金额不能为空")
	@ExcelField(title="开票金额", align=2, sort=12)
	public Double getInvoiceMoney() {
		return invoiceMoney;
	}

	public void setInvoiceMoney(Double invoiceMoney) {
		this.invoiceMoney = invoiceMoney;
	}
	
	@NotNull(message="发票类型不能为空")
	@ExcelField(title="发票类型", dictType="invoice_type", align=2, sort=13)
	public Integer getInvoiceType() {
		return invoiceType;
	}

	public void setInvoiceType(Integer invoiceType) {
		this.invoiceType = invoiceType;
	}
	
	@ExcelField(title="纳税人识别号", align=2, sort=14)
	public String getTaxPayerNo() {
		return taxPayerNo;
	}

	public void setTaxPayerNo(String taxPayerNo) {
		this.taxPayerNo = taxPayerNo;
	}
	
	@ExcelField(title="开户行", align=2, sort=15)
	public String getBankName() {
		return bankName;
	}

	public void setBankName(String bankName) {
		this.bankName = bankName;
	}
	
	@ExcelField(title="开户行账号", align=2, sort=16)
	public String getBankNo() {
		return bankNo;
	}

	public void setBankNo(String bankNo) {
		this.bankNo = bankNo;
	}
	
	@ExcelField(title="电话", align=2, sort=17)
	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}
	
	@ExcelField(title="开户行地址", align=2, sort=18)
	public String getBankAddress() {
		return bankAddress;
	}

	public void setBankAddress(String bankAddress) {
		this.bankAddress = bankAddress;
	}
	
	@ExcelField(title="应付结算单", align=2, sort=19)
	public String getFeePayable() {
		return feePayable;
	}

	public void setFeePayable(String feePayable) {
		this.feePayable = feePayable;
	}
	
	@ExcelField(title="物流组织", align=2, sort=20)
	public String getLogistics() {
		return logistics;
	}

	public void setLogistics(String logistics) {
		this.logistics = logistics;
	}
	
}